/**
 * @Author: 吕庆龙
 * @Date: 2019/12/12 17:04
 * <p>
 * 功能描述:
 */
public class Interview_015 {
    public static void main(String[] args) {
        ListNode node = null;
        ReverseList(node);

    }

    /**
     * 1.题目
     * 输入一个链表，反转链表后，输出新链表的表头
     * <p>
     * 2.考点:
     *
     * <p>
     * 3.解析
     * 1,2,3,4,5
     * 反转链表,可以用尾插法来反转 【腾讯面试题】
     */
    public static ListNode ReverseList(ListNode head) {
        //如果链表除了头结点没有节点或者只有一个节点,则不需要反转
        if(head == null || head.next == null){
            System.out.println("链表没有节点或者只有一个节点,不需要反转");
            return head;
        }
        ListNode reverseHead = new ListNode(0);
        ListNode current = head;
        ListNode temp = null;
        while(current != null){
            temp = current.next;       //先把后面节点记录下来,免得丢失了
            current.next = reverseHead.next; //
            reverseHead.next = current;
            current = temp;
        }
        reverseHead = reverseHead.next;
        return reverseHead;
    }


}

